package XMLScene;

import Tracer.RTColor;
import Tracer.RTHitpointObjMap;
import Tracer.RTRay;

/**
 * Interface for all object class, object can be sphere,triangle,plane.
 * 
 * @author Hongyi Zhao
 */
public interface RTIObject {
	/**
	 * @param ray
	 * @param hitPointObjSingleMap
	 * @return hitpoint mapping for object
	 */
	RTHitpointObjMap objectHitDetect(RTRay ray,
			RTHitpointObjMap hitPointObjSingleMap);

	/**
	 * @return surface of object
	 */
	RTSurface getSurface();

	/**
	 * @param validHitPointObjMap
	 * @param objectBitmap
	 * @return the original color of a pixel before shading and reflection
	 */
	RTColor calOriginColor(RTHitpointObjMap validHitPointObjMap);
}
